package com.xiaoshuidi.cloud.module.finance.controller.admin.order.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Map;

/**
 * 管理后台 - 支付订单提交 Request VO
 */
@Schema(description = "管理后台 - 支付订单提交 Request VO")
@Data
public class PayOrderSubmitReqVO {

    /**
     * 支付订单来源id(账单/预约单等)
     */
    @NotEmpty(message = "支付订单来源id不能为空")
    private String sourceBizId;
    /**
     * 支付订单来源类型(账单/预约单等)
     * {@link com.xiaoshuidi.cloud.module.finance.enums.finance.SourceBizTypeEnum}
     */
    @NotEmpty(message = "支付订单来源类型不能为空")
    private String sourceBizType;

    /**
     * 应用id
     */
    @NotNull(message = "支付应用id不能为空")
    private Long appId;
    /**
     * 支付渠道", requiredMode = Schema.RequiredMode.REQUIRED, example = "wx_pub
     */
    @Schema(description = "支付渠道", requiredMode = Schema.RequiredMode.REQUIRED, example = "wx_pub")
    @NotEmpty(message = "支付渠道不能为空")
    private String channelCode;

    /**
     * 支付渠道的额外参数，例如说，微信公众号需要传递 openid 参数
     */
    @Schema(description = "支付渠道的额外参数，例如说，微信公众号需要传递 openid 参数")
    private Map<String, String> channelExtras;

    /**
     * 展示模式", example = "url
     */
    @Schema(description = "展示模式", example = "url") // 参见 {@link PayDisplayModeEnum} 枚举。如果不传递，则每个支付渠道使用默认的方式
    private String displayMode;
}
